/******************************************************************************
 * Copyright (C) 2017 Chengdu Dlhd information industry co. LTD.
 * All Rights Reserved.
 * 本软件为成都顶联互动信息产业有限公司开发研制。未经本公司正式书面同意，其他任何个人、团体不得使用、复制、修改或发布本软件.
 *****************************************************************************/
package net.dgg.dggcloud.service.jrcrm.service.cms;

import net.dgg.dggcloud.service.common.base.service.BaseService;
import net.dgg.dggcloud.service.jrcrm.dao.cms.WorkDayDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;


/**
 * @ClassName: WorkDayService
 * @Description: 工作日历管理逻辑类
 * @author 汤宏
 * @date 2017年11月01日11:30:00
 *
 */
@Service
public class WorkDayService extends BaseService {
    @Autowired
    private WorkDayDao workDayDao;

    /**
     * 查询所有工作日历
     * @param map year 如：2017
     * @return
     */
    public List<Map> listWorkDayByMap(Map map) {
        return workDayDao.listWorkDayByMap(map);
    }

    /**
     * 更新工作日信息
     * @param map
     */
    public void updateWorkDay(Map map) {
        try {
            workDayDao.updateWorkDay(map);
        } catch (Exception e) {
            throw new RuntimeException("fail");
        }
    }
    /**
     * 根据日期查询是否为工作日
     * @param map
     * 参数有：
     *        date String 日期 如：2017-01-01
     * @return 1 工作日 、 2 节假日
     */
    public int queryDateType(Map map){
        int result = 0;
        try {
            Map reMap = workDayDao.getByDate(map);
            if(null != reMap){
                Object wtObj = reMap.get("work_type");
                result = null!=wtObj?Integer.parseInt(wtObj.toString()):1;
            }
        } catch (Exception e) {
            throw new RuntimeException("fail");
        }

        return result;
    }
    /**
     * 查询某一日期后X工作日后的日期
     * @param map
     * 参数有：
     *       date String 日期 如：2017-01-01
     *       days int 天数 如：10
     * @return
     */
    public String queryAfterDate(Map map) {
        String result = "";
        try {
            result =  workDayDao.queryAfterDate(map);
        } catch (Exception e) {
            throw new RuntimeException("fail");
        }
        return result;
    }
    /**
     * 查询某一日期后X工作日前的日期
     * @param map
     * 参数有：
     *       date String 日期 如：2017-01-01
     *       days int 天数 如：10
     * @return date
     */
    public String queryBeforeDate(Map map) {
        String result = "";
        try {
            result =  workDayDao.queryBeforeDate(map);
        } catch (Exception e) {
            throw new RuntimeException("fail");
        }
        return result;
    }
    /**
     * 查询日期1和日期2之间的工作日天数
     * @param map
     * 参数有：
     *        startDate String 开始日期 如：2017-01-01
     *        endDate String 结束日期 如：2017-02-01
     * @return 天数
     */
    public int queryBetweenDays(Map map) {
        int result = 0;
        try {
            result =  workDayDao.queryBetweenDays(map);
        } catch (Exception e) {
            throw new RuntimeException("fail");
        }
        return result;
    }

    /**
     * 查询日期1和日期2之间的工作日
     *
     * @param map startDate String 开始日期 如：2017-01-01
     *            endDate String 结束日期 如：2017-02-01
     * @return
     */
    public List<Map> listWorkDaysbetweenDays(Map map) {
        return this.workDayDao.listWorkDaysbetweenDays(map);
    }

}
